home *** CD-ROM | disk | FTP | other *** search
/ HPAVC / HPAVC CD-ROM.iso / pc / RGASM.RAR / ASMCODE.EXE / CHAPT8 / CVIDEO.C < prev    next >
Encoding:
C/C++ Source or Header  |  1992-05-30  |  5.5 KB  |  192 lines

  1.  
  2. /***************************************************************
  3. *                                                              *
  4. *   Ä»pÑñѽѡ¿Ñ Γ¿»á ¿ß»«½∞ºπѼ«ú« ó¿ñÑ«áñá»ΓÑpá               *
  5. *                                                              *
  6. *   ÇóΓ«p: æ«»¿¡ Ç.ê.  éâô,  é«p«¡Ñª,  1992 ú.                 *
  7. *   ------                                                     *
  8. *                                                              *
  9. *   Æ¿» áñá»ΓÑpá ó«ºópáΘáÑΓß∩ ó ßΓp«¬Ñ  char VTYPE [4]:        *
  10. *                                                              *
  11. *   MDA   -¼«¡«σp«¼¡δ⌐ áñá»ΓÑp                                 *
  12. *   CGA   -áñá»ΓÑp Γ¿»á  CGA                                   *
  13. *   MCGA  -áñá»ΓÑp Γ¿»á  MCGA                                  *
  14. *   EGA   -áñá»ΓÑp Γ¿»á  EGA                                   *
  15. *                                                              *
  16. *                                                              *
  17. ****************************************************************/
  18.  
  19. #include <dos.h>
  20.  
  21. int EGACGA ();
  22.  
  23. int MCGAVGA ();
  24.  
  25.  
  26. void  CVIDEO (char *VTYPE)
  27.  
  28.  
  29. {
  30.  
  31.  
  32.  
  33. union  REGS  regs;
  34.  
  35.  
  36. char  AL, BL;
  37.  
  38.  
  39.       regs.x.ax = 0x1a00;        /*  τΓÑ¡¿Ñ ΓѬπΘÑú« pѪ¿¼á                */
  40.  
  41.       int86 (0x10, ®s, ®s);
  42.  
  43.       AL = regs.h.al;
  44.  
  45.       BL = regs.h.bl;
  46.  
  47. /*-------------------------------------------------------------------------*/
  48.  
  49. /*  Åp«óÑp¬á áñá»ΓÑp«ó, ¬p«¼Ñ   VGA  ¿½¿  MCGA                             */
  50.  
  51.     strcpy (VTYPE, "MDA ");
  52.  
  53.     if (AL != 0x1a)              /*  not VGA  or  not MCGA ?               */
  54.       {
  55.  
  56. /*  Åp«óÑp¬á ¡á½¿τ¿∩ áñá»ΓÑp«ó  MDA, CGA, EGA                              */
  57.  
  58.        if (EGACGA () == 0)  return;
  59.  
  60.         if (EGACGA () == 1)
  61.           {
  62.             strcpy (VTYPE, "CGA ");  return;
  63.           }
  64.  
  65.         if (EGACGA () == 3)
  66.           {
  67.             strcpy (VTYPE, "EGA ");  return;
  68.           }
  69.       }
  70.  
  71. /*-------------------------------------------------------------------------*/
  72.  
  73. /*  Åp«óÑp¬á ¡á½¿τ¿∩ áñá»ΓÑp«ó  MDA, VGA  ¿½¿  MCGA                        */
  74.  
  75.     else      /* AL == 0x1a                                                */
  76.  
  77.       {
  78.          if (BL < 2)  return;               /*  MDA                        */
  79.  
  80.          if (BL == 2)                       /*  CGA                        */ 
  81.           {
  82.             strcpy (VTYPE, "CGA ");  return;
  83.           }
  84.  
  85.          if (BL <= 5)
  86.            {
  87.             if (EGACGA () == 0)  return;    /*  MDA                        */
  88.  
  89.             if (EGACGA () == 1)             /*  CGA                        */
  90.               {
  91.                 strcpy (VTYPE, "CGA ");  return;
  92.               }
  93.  
  94.             if (EGACGA () == 3)            /*  EGA                         */ 
  95.               {
  96.                 strcpy (VTYPE, "EGA ");  return;
  97.               }
  98.            }
  99.  
  100.          else
  101.            {
  102.  
  103.             if (MCGAVGA (BL) == 2)         /*  MCGA                        */
  104.               {
  105.                 strcpy (VTYPE, "MCGA");  return;
  106.               }
  107.  
  108.             if (MCGAVGA (BL) == 4)        /*  VGA                          */
  109.               {
  110.                 strcpy (VTYPE, "VGA ");  return;
  111.               }
  112.            }
  113.  
  114.       }
  115.  
  116. }  /*  End  CVIDEO  */
  117.  
  118.  
  119.  
  120. /***************************************************************
  121. *                                                              *
  122. *   Ä»pÑñѽѡ¿Ñ ¡á½¿τ¿∩ áñá»ΓÑp«ó  MCGA, VGA                   *
  123. *                                                              *
  124. *   éδσ«ñ¡«Ñ º¡áτÑ¡¿Ñ:                                         *
  125. *   ------------------                                         *
  126. *   2  -Γ¿» áñá»ΓÑpá   MCGA                                    *
  127. *                                                              *
  128. *   4  -Γ¿» áñá»ΓÑpá   VGA                                     *
  129. *                                                              *
  130. *                                                              *
  131. ****************************************************************/
  132.  
  133.  
  134. int  MCGAVGA (char  BL)
  135.  
  136.  
  137. {
  138.      if (BL >  8)    return (2);
  139.  
  140.      else   return (4);
  141. }
  142.  
  143.  
  144. /***************************************************************
  145. *                                                              *
  146. *   Ä»pÑñѽѡ¿Ñ ¡á½¿τ¿∩ áñá»ΓÑp«ó  EGA, CGA                    *
  147. *                                                              *
  148. *   éδσ«ñ¡«Ñ º¡áτÑ¡¿Ñ:                                         *
  149. *   ------------------                                         *
  150. *   0  -Γ¿» áñá»ΓÑpá   MDA                                     *
  151. *                                                              *
  152. *   1  -Γ¿» áñá»ΓÑpá   CGA                                     *
  153. *                                                              *
  154. *   3  -Γ¿» áñá»ΓÑpá   EGA                                     *
  155. *                                                              *
  156. *                                                              *
  157. ****************************************************************/
  158.  
  159.  
  160. int  EGACGA (void)
  161.  
  162.  
  163. {
  164.  
  165.  
  166. union  REGS  regs;
  167.  
  168. int  AL;
  169.  
  170.       regs.h.ah = 0x12;
  171.  
  172.       regs.h.bl = 0x10;
  173.  
  174.       regs.x.cx = 0;
  175.  
  176.       int86 (0x10, ®s, ®s);
  177.  
  178.       if (regs.x.cx != 0)  return (3);
  179.  
  180.       else
  181.           {
  182.               int86 (0x11, ®s, ®s);
  183.  
  184.               AL = regs.h.al & 0x30;
  185.  
  186.               if (AL == 0x30)  return (0);    /*  MDA  */
  187.  
  188.               else   return (1);
  189.           }
  190.  
  191. }
  192.